/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.mindbox.mueblesalpes.presentacion.producto;

import com.mindbox.mueblesalpes.negocio.entity.Color;
import com.mindbox.mueblesalpes.negocio.entity.Dimension;
import com.mindbox.mueblesalpes.negocio.entity.Mueble;
import com.mindbox.mueblesalpes.negocio.entity.TipoMueble;
import com.mindbox.mueblesalpes.negocio.producto.IProductoService;
import com.mindbox.mueblesalpes.negocio.producto.ProductoService;
import com.mindbox.mueblesalpes.presentacion.utils.Mensajes;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.richfaces.model.UploadItem;

/**
 *
 * @author Catalina
 */
public class ProductoEditBean {

    private static final String LIST = "list";
    private String referencia;
    private String nombre;
    private String descripcion;
    private String tipo;
    private String material;
    private Dimension dimension;
    private String alto;
    private String ancho;
    private String profundidad;
    private String color;
    private String peso;
    private List<UploadItem> foto;
    private UploadItem fotoMueble;
    private List<SelectItem> colorItems = new ArrayList<SelectItem>();

    @EJB
    private IProductoService productoService;

    /** Creates a new instance of ProductoEditBean */
    public ProductoEditBean() {
        
        FacesContext facescontext = FacesContext.getCurrentInstance();
        Mueble mueble = (Mueble) facescontext.getExternalContext().getSessionMap().get("MuebleEdit");
        if (mueble != null) {
            inicializarDatos(mueble);
            cargarColores();
        }
    }

    private void cargarColores() {
        SelectItem item1 = new SelectItem(Color.AMARILLO);
        SelectItem item2 = new SelectItem(Color.AVELLANA);
        SelectItem item3 = new SelectItem(Color.AZUL);
        SelectItem item4 = new SelectItem(Color.CAOBA);
        SelectItem item5 = new SelectItem(Color.MADERA);
        SelectItem item6 = new SelectItem(Color.MADERA);
        SelectItem item7 = new SelectItem(Color.NARANJA);
        SelectItem item8 = new SelectItem(Color.NATURAL);
        SelectItem item9 = new SelectItem(Color.ROJO);
        SelectItem item10 = new SelectItem(Color.WENGUE);

        colorItems.add(item1);
        colorItems.add(item2);
        colorItems.add(item3);
        colorItems.add(item4);
        colorItems.add(item5);
        colorItems.add(item6);
        colorItems.add(item7);
        colorItems.add(item8);
        colorItems.add(item9);
        colorItems.add(item10);
    }

    private void crearFoto(byte[] foto) {
        try {
            FileOutputStream fout = new FileOutputStream(new File(fotoMueble.getFileName()));
            fout.write(foto);
            fout.close();
        } catch (Exception e) {
            Mensajes.asignarMensajeError("insert.error.foto");
        }
    }

    
    private void inicializarDatos(Mueble mueble) {
        referencia = mueble.getReferencia();
        nombre = mueble.getNombre();
        descripcion = mueble.getDescripcion();
        tipo = mueble.getTipoMueble().toString();
        material = mueble.getMaterial();
        dimension = mueble.getDimension();

        if (dimension.getAlto() != null) {
            alto = dimension.getAlto().toString();
        }

        if (dimension.getAncho() != null) {
            ancho = dimension.getAncho().toString();
        }
        if (dimension.getProfundidad() != null) {
            profundidad = dimension.getProfundidad().toString();
        }

        color = mueble.getColor().toString();

        if (mueble.getPeso() != null) {
            peso = mueble.getPeso().toString();
        }
    }

    public String editar() {
        try {
            Mueble mueble = new Mueble();
            mueble.setReferencia(referencia);
            mueble.setNombre(nombre);
            mueble.setDescripcion(descripcion);
            Dimension dimension = new Dimension();
            dimension.setAlto(new Double(alto));
            dimension.setAncho(new Double(ancho));
            dimension.setProfundidad(new Double(profundidad));
            mueble.setDimension(dimension);
            mueble.setColor(obtenerColor(color));


            if(tipo.equals(TipoMueble.EXTERIOR.toString())){
                mueble.setTipoMueble(TipoMueble.EXTERIOR);
            }else if(tipo.equals(TipoMueble.INTERIOR.toString())){
                mueble.setTipoMueble(TipoMueble.INTERIOR);
            }           
            mueble.setMaterial(material);
            mueble.setPeso(new Double(peso));

            boolean result = productoService.editarProducto(mueble);
            if (result) {
                Mensajes.asignarMensajeInfo("edit.exitoso");
            }
        } catch (Exception e) {
            Mensajes.asignarMensajeError("edit.error");
        }
        return LIST;
    }

private Color obtenerColor(String color){
        if(color.equals(Color.AMARILLO.toString())){
            return Color.AMARILLO;
        }else if(color.equals(Color.AVELLANA.toString())){
            return Color.AVELLANA;
        }else if(color.equals(Color.AZUL.toString())){
            return Color.AZUL;
        }else if(color.equals(Color.CAOBA.toString())){
            return Color.CAOBA;
        }else if(color.equals(Color.MADERA.toString())){
            return Color.MADERA;
        }else if(color.equals(Color.NARANJA.toString())){
            return Color.NARANJA;
        }else if(color.equals(Color.NATURAL.toString())){
            return Color.NATURAL;
        }else if(color.equals(Color.ROJO.toString())){
            return Color.ROJO;
        }else if(color.equals(Color.WENGUE.toString())){
            return Color.WENGUE;
        }
        return Color.NATURAL;
    }

    public String getReferencia() {
        return referencia;
    }

    public void setReferencia(String referencia) {
        this.referencia = referencia;
    }

    public String getAlto() {
        return alto;
    }

    public void setAlto(String alto) {
        this.alto = alto;
    }

    public String getAncho() {
        return ancho;
    }

    public void setAncho(String ancho) {
        this.ancho = ancho;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public Dimension getDimension() {
        return dimension;
    }

    public void setDimension(Dimension dimension) {
        this.dimension = dimension;
    }

    public String getMaterial() {
        return material;
    }

    public void setMaterial(String material) {
        this.material = material;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getPeso() {
        return peso;
    }

    public void setPeso(String peso) {
        this.peso = peso;
    }

    public String getProfundidad() {
        return profundidad;
    }

    public void setProfundidad(String profundidad) {
        this.profundidad = profundidad;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public List<SelectItem> getColorItems() {
        return colorItems;
    }

    public void setColorItems(List<SelectItem> colorItems) {
        this.colorItems = colorItems;
    }

    public List<UploadItem> getFoto() {
        return foto;
    }

    public void setFoto(List<UploadItem> foto) {
        this.foto = foto;
    }
}
